package com.xjggb.队列;

import java.util.Arrays;

public class QueueDemo<E> implements com.xjggb.队列.Queue<E> {
    //    定义一个数组
    private E[] elements;
    //    定义一个长度变量
    private int size;
    //    定义初始化变量
    private static final int DEFAULT_CAPACITY = 5;

    //定义队头
    private int front;
   //定义队尾
   private int rear;


   /*
   * 初始化数组
   * */
    public QueueDemo(){
        elements=(E[]) new Object[DEFAULT_CAPACITY];
    }


    public int size() {
        return size;
    }

    public boolean isEmpty() {
        return size==0;
    }

    public void clear() {
         elements=null;
    }

    /*
    * 入队
    * */
    public void enQueue(E element) {
        add(size,element);
        size++;
        rear++;
    }
    /*
    * 出队
    * */
    public E deQueue() {

        if (front==rear){
            System.out.println("出栈完成");
        }

        E element = elements[front];
        elements[front]=null;
        front++;
        size--;
        return element;
    }

    /*
    * 获取队列的头元素
    * */
    public E front() {
        return elements[front];
    }

    private   void add(int sizeHolder,E element){
        elements[sizeHolder]=element;
    }


    @Override
    public String toString() {
       return Arrays.toString(elements);
    }
}
